'use strict'
class image {
    constructor () {
        this.param = '/:name'  //这里可以自定义参数
    }

    __mid(){
        return [
          {
            name:'token-verify',
            path:['post']
          }
        ]
    }

    // 返回图片数据
    // 此处的:name可以替换为其他的具体图片名字，只是代表后面提交的必须提交具体的参数，:是识别参数的符号，这是在框架层面上实现的
    async get(c){
        // c.param是一个对象，其中的key值是路由参数的名称
        let imgname = c.param.name;
        
        await c.helper.pipe(`${c.service.imagePath}/${imgname}`,c.reply)
    }
    async post(c) {
        // 根据name获取文件对象
        // getFile可以获取到文件的属性并以对象的形式保存：{filename,'content-type',start,end,lenght}
        let f = c.getFile('image');
        
        if (!f) {
            return c.status(400).send('image not found')
        }

        // 根据传入的原始文件名生成唯一文件名，主要使用f.filename的扩展名 
        let fname = c.helper.makeName(f.filename);

        // 移动文件到指定位置
        await c.moveFile(f,`${c.service.imagePath}/${fname}`);//如果没有images目录的话会导致报错

        c.send(fname);
    }

}
module.exports = image